/* 
 * File:   FileCharacter.cpp
 * Author: mauro
 * 
 * Created on 13 de octubre de 2014, 17:02
 */

#include "FileCharacter.h"

FileCharacter::FileCharacter(){
    this->id = 1;
    this->xCoordinate=0;
    this->yCoordinate=0;
}

FileCharacter::FileCharacter(int id, int x, int y) {
    this->id=id;
    this -> xCoordinate = x;
    this -> yCoordinate = y;
}

FileCharacter::~FileCharacter() {
}

int FileCharacter::getPlayerID(){
    return this->id;
}

int FileCharacter::getXCoordinate(){
    return this -> xCoordinate;
}
    
int FileCharacter::getYCoordinate(){
    return this -> yCoordinate;
}

void FileCharacter::setPlayerID(int id){
    this->id=id;
}

void FileCharacter::setXCoordinate(int x){
    this -> xCoordinate =x;
}

void FileCharacter::setYCoordinate(int y){
    this->yCoordinate=y;
}

bool FileCharacter::assignCharacter(JSON::Object things, FileCharacter &fc) {
    //Se obtienen los datos de los personajes del archivo
    
    SBSLog* myLogFile;
    myLogFile->getInstance(MY_LOG_MODE);
    bool success = false;

    if ((things["id"]).type() == JSON::INT) {
        if ((things["id"]).as_int() >= 0) {
                this->id = ((things["id"]).as_int());
                success=true;
        }//No es mayor o igual a cero
        else {
//            cout << "ERROR de id invalido" << endl;
            myLogFile->writeInLog(2, "[2] El valor pasado como id del personaje es invalido (No esta entre 1-4).\n");
            }
    }//No es un int
    else {
//        cout << "ERROR de id invalido" << endl;
        myLogFile->writeInLog(2, "[2] El valor pasado como id del personaje es invalido (error de tipo).\n");
        }
    
    if ((things["x"]).type() == JSON::INT) {
        if ((things["x"]).as_int() >= 0) {
            this->xCoordinate = (things["x"]).as_int();
            success=true;
        }//No es un numero mayor o igual a 0
        else {
//            cout << "ERROR de posicion invalida" << endl;
            myLogFile->writeInLog(2, "[2] El valor pasado como posicion en x del personaje es invalido(x<=0).\n");
        }
    }//No es un int
    else {
//        cout << "ERROR de posicion invalida" << endl;
        myLogFile->writeInLog(2, "[2] El valor pasado como posicion en x del personaje es invalido (error de tipo).\n");
        
    }

    if ((things["y"]).type() == JSON::INT) {
        if ((things["y"]).as_int() >= 0) {
            this->yCoordinate = (things["y"]).as_int();
            success=true;
        }//No es un numero mayor o igual a 0
        else {
//            cout << "ERROR de posicion invalida" << endl;
            myLogFile->writeInLog(2, "[2] El valor pasado como posicion en y del personaje es invalido(x<=0).\n");
        }
    }//No es un int
    else {
//        cout << "ERROR de posicion invalida" << endl;
        myLogFile->writeInLog(2, "[2] El valor pasado como posicion en y del personaje es invalido (error de tipo).\n");
        
    }
return success;
  
}
